ทีมสนับสนุนวิชาการต้องการรายชื่อ การลงทะเบียนที่ยังใช้งานอยู่ซึ่งผลการเรียนช่วงล่าสุดลดลง โดยเปรียบเทียบนักศึกษาแต่ละคนกับผลการเรียนก่อนหน้าของตนเองในรายวิชาเดียวกัน
กำหนดกติกาให้ตรงกัน
- ใช้สองช่วงเวลา:
earlierและrecentโดยแต่ละช่วงมีการประเมินสองครั้งที่ให้น้ำหนักเท่ากัน - ต้องมีคะแนนที่ไม่เป็น NULL อย่างน้อยสองรายการใน แต่ละ ช่วงเวลา ก่อนนำค่าเฉลี่ยมาเปรียบเทียบ
- คำนวณ
decline_points = earlier_avg - recent_avg - หากคะแนนลดลงอย่างน้อย 15 คะแนน ให้ถือเป็น Review มิฉะนั้นการลงทะเบียนที่มีสิทธิ์จะได้สถานะ No alert
- แยก Insufficient data ออกมาต่างหาก เลขศูนย์เป็นคะแนนที่ใช้ได้ ส่วนค่า NULL หรือบันทึกที่หายไปไม่ถือเป็นศูนย์
เตรียมฐานข้อมูลของคุณ
เปิดไฟล์ lab8_setup.sql ที่ให้มา จากโฟลเดอร์ TA DSAI2202/lab8/ ใน pgAdmin แล้วรันไฟล์ทั้งหมด ใช้การตั้งค่าการเชื่อมต่อทางด้านขวาอีกครั้งทุกครั้งที่คุณเปิดการเชื่อมต่อใหม่
ชุดติดตั้งยังมี performance_comparison ซึ่งเป็นคิวรีที่บันทึกไว้เรียกว่า view ใช้ประกอบแบบฝึกหัดในลำดับถัดไป ไม่ใช่ตารางเพิ่มเติมที่เก็บผลการประเมิน
SET search_path TO lab8;SET search_path TO lab8;
SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;SET search_path TO lab8;
SELECT e.enrolment_id, e.student_id, e.course_code,
r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;ตรวจสอบจำนวนแถวของชุดติดตั้ง
| ตาราง | จำนวนแถว | หนึ่งแถวหมายถึง |
|---|---|---|
| students | 18 | โปรไฟล์นักศึกษาหนึ่งคน |
| courses | 4 | รายวิชาหนึ่งวิชา |
| enrolments | 24 | การลงทะเบียนของนักศึกษาหนึ่งคนในหนึ่งรายวิชา |
| assessment_results | 92 | ผลการประเมินหนึ่งรายการสำหรับการลงทะเบียนและช่วงเวลาหนึ่งช่วง |
| support_units | 7 | หน่วยสนับสนุนหนึ่งหน่วยในแบบฝึกหัดลำดับชั้นเสริม |
มี 22 การลงทะเบียนที่ยังใช้งานอยู่และ 2 รายการที่ถอนออกแล้ว ผลการสอบสวนขั้นสุดท้ายต้องได้ หนึ่งแถวต่อการลงทะเบียนที่ยังใช้งานอยู่หนึ่งรายการ ไม่ใช่หนึ่งแถวต่อการประเมินหนึ่งครั้ง หรือหนึ่งแถวต่อนักศึกษาหนึ่งคนในทุกรายวิชา
ห้ากรณีศึกษาที่ต้องติดตาม
| การลงทะเบียน | รายวิชา | คะแนนช่วงก่อนหน้า | คะแนนช่วงล่าสุด | มีหลักฐานเพียงพอหรือไม่? |
|---|---|---|---|---|
| E01 | SQL101 | 80, 90 | 60, 70 | เพียงพอ |
| E07 | SQL101 | 80, NULL | 50, 50 | ไม่เพียงพอ: มีคะแนนช่วงก่อนหน้าเพียงรายการเดียว |
| E08 | SQL101 | 80, 80 | NULL, NULL | ไม่เพียงพอ: ไม่มีคะแนนที่ประเมินแล้วในช่วงล่าสุด |
| E09 | SQL101 | ไม่มีแถวข้อมูล | 60, 60 | ไม่เพียงพอ: ไม่มีข้อมูลช่วงก่อนหน้า |
| E24 | STAT101 | 0, 0 | 0, 0 | เพียงพอ |
คิวรีตรวจสอบจะคืนค่า 18 แถวของการประเมิน E09 มีเพียงสองแถว โดยไม่มีการประเมินช่วงก่อนหน้า ส่วน E08 มีสองแถวในช่วงล่าสุด แต่ไม่มีแถวใดที่มีการบันทึกคะแนน
ตรวจสอบสองตัวอย่างที่มีสิทธิ์
E01: ค่าเฉลี่ยช่วงก่อนหน้า 85 ค่าเฉลี่ยช่วงล่าสุด 65 ลดลง 20 คะแนน → Review ส่วน E24: ค่าเฉลี่ยทั้งสองช่วงเป็น 0 ลดลง 0 → No alert ทั้งสามตัวอย่างที่เหลือต้องติดป้าย Insufficient data